package com.piggy.logi.sys.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 运单信息视图对象 logi_waybill
 *
 * @author piggy
 * @date 2023-10-25
 */
@Data
@Accessors(chain = true)
@ApiModel("运单信息视图对象")
public class LogiWaybillVo implements Serializable {

	private static final long serialVersionUID = 1L;

	/** 运单id */
	@Excel(name = "运单id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("运单id")
	private Long waybillId;

	/** 运单编号 */
	@Excel(name = "运单编号")
	@ApiModelProperty("运单编号")
	private String outCode;

	/** 原运单id */
	@Excel(name = "原运单id")
	@ApiModelProperty("原运单id")
	private String oldOutCode;

	/** 部门id */
	@Excel(name = "部门id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("部门id")
	private Long deptId;

	/** 退单(0运单1退单) */
	@Excel(name = "退单(0运单1退单)")
	@ApiModelProperty("退单(0运单1退单)")
	private Integer refund;

	/** 运单模式（0基础1完整） */
	@Excel(name = "运单模式" , readConverterExp = "0=基础1完整")
	@ApiModelProperty("运单模式（0基础1完整）")
	private Integer waybillScheme;

	/** 运单类型 */
	@Excel(name = "运单类型")
	@ApiModelProperty("运单类型")
	private Integer waybillType;

	/** 发货网点ID */
	@Excel(name = "发货网点ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货网点ID")
	private Long shipNetId;

	/** 收货网点ID */
	@Excel(name = "收货网点ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("收货网点ID")
	private Long deliveryNetId;

	/** 线路ID */
	@Excel(name = "线路ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("线路ID")
	private Long routId;

	/** 项目ID */
	@Excel(name = "项目ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("项目ID")
	private Long projectId;

	/** 发货方ID */
	@Excel(name = "发货方ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货方ID")
	private Long shipId;

	/** 发货方联系人 */
	@Excel(name = "发货方联系人")
	@ApiModelProperty("发货方联系人")
	private String shipContacts;

	/** 发货方联系电话 */
	@Excel(name = "发货方联系电话")
	@ApiModelProperty("发货方联系电话")
	private String shipContactTel;

	/** 发货方省市区、县ID */
	@Excel(name = "发货方省市区、县ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货方省市区、县ID")
	private Long shipDistrictId;

	/** 发货方详细地址 */
	@Excel(name = "发货方详细地址")
	@ApiModelProperty("发货方详细地址")
	private String shipAddress;

	/** 发货方经度 */
	@Excel(name = "发货方经度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货方经度")
	private Double shipLng;

	/** 发货方纬度 */
	@Excel(name = "发货方纬度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货方纬度")
	private Double shipLat;

	/** 发货方计划发货时间 */
	@Excel(name = "发货方计划发货时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("发货方计划发货时间")
	private Date shipPlanTime;

	/** 发货方预约发货时间 */
	@Excel(name = "发货方预约发货时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("发货方预约发货时间")
	private Date shipAppointmentTime;

	/** 发货方提货方式 */
	@Excel(name = "发货方提货方式")
	@ApiModelProperty("发货方提货方式")
	private Integer shipPickUpWay;

	/** 发货方提货费 */
	@Excel(name = "发货方提货费")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("发货方提货费")
	private Long shipPickUpFee;

	/** 收货方ID */
	@Excel(name = "收货方ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("收货方ID")
	private Long deliveryId;

	/** 收货方联系人 */
	@Excel(name = "收货方联系人")
	@ApiModelProperty("收货方联系人")
	private String deliveryContacts;

	/** 收货方联系电话 */
	@Excel(name = "收货方联系电话")
	@ApiModelProperty("收货方联系电话")
	private String deliveryContactTel;

	/** 收货方区县Id */
	@Excel(name = "收货方区县Id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("收货方区县Id")
	private Long deliveryDistrictId;

	/** 收货方详细地址 */
	@Excel(name = "收货方详细地址")
	@ApiModelProperty("收货方详细地址")
	private String deliveryAddress;

	/** 收货方经度 */
	@Excel(name = "收货方经度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("收货方经度")
	private Double deliveryLng;

	/** 收货方纬度 */
	@Excel(name = "收货方纬度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("收货方纬度")
	private Double deliveryLat;

	/** 收货方计划发货时间 */
	@Excel(name = "收货方计划发货时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("收货方计划发货时间")
	private Date deliveryPlanTime;

	/** 收货方预约发货时间 */
	@Excel(name = "收货方预约发货时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("收货方预约发货时间")
	private Date deliveryAppointmentTime;

	/** 收货方提货方式 */
	@Excel(name = "收货方提货方式")
	@ApiModelProperty("收货方提货方式")
	private Integer deliveryPickUpWay;

	/** 收货方送货费 */
	@Excel(name = "收货方送货费")
	@ApiModelProperty("收货方送货费")
	private BigDecimal deliveryPickUpFee;

	/** 送货时效要求 */
	@Excel(name = "送货时效要求")
	@ApiModelProperty("送货时效要求")
	private Integer deliveryTimeReq;

	/** 是否控货（0否1是） */
	@Excel(name = "是否控货" , readConverterExp = "0=否1是")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("是否控货（0否1是）")
	private Integer cargoControl;

	/** 控货状态 (1 确认控货 2 放货) */
	@Excel(name = "控货状态 (1 确认控货 2 放货)")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("控货状态 (1 确认控货 2 放货)")
	private Integer cargoControlStatus;

	/** 承运商操作人 */
	@Excel(name = "承运商操作人")
	@ApiModelProperty("承运商操作人")
	private String carrierOperateName;

	/** 调度车次编号 */
	@Excel(name = "调度车次编号")
	@ApiModelProperty("调度车次编号")
	private String scheduleNo;

	/** 短驳单号 */
	@Excel(name = "短驳单号")
	@ApiModelProperty("短驳单号")
	private String drayageNo;

	/** 装货id */
	@Excel(name = "装货id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("装货id")
	private Long loadId;

	/** 卸车id */
	@Excel(name = "卸车id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("卸车id")
	private Long unLoadId;

	/** 运单可用状态(0 可用 1 不可用) */
	@Excel(name = "运单可用状态(0 可用 1 不可用)")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("运单可用状态(0 可用 1 不可用)")
	private Integer enableStatus;

	/** 运单状态 */
	@Excel(name = "运单状态")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("运单状态")
	private Integer status;

	/** 调度状态 */
	@Excel(name = "调度状态")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("调度状态")
	private Integer scheduleStatus;

	/** 短驳状态 */
	@Excel(name = "短驳状态")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("短驳状态")
	private Integer drayageStatus;

	/** 开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票 */
	@Excel(name = "开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票")
	private Integer invoiceStatus;

	/** 回单附件 */
	@Excel(name = "回单附件")
	@ApiModelProperty("回单附件")
	private String receiptAttachments;

	/** 运单附件 */
	@Excel(name = "运单附件")
	@ApiModelProperty("运单附件")
	private String billAttach;

	@Excel(name = "出库单附件")
	@ApiModelProperty("出库单附件")
	private String outboundAttach;

	/** 总包装费 */
	@Excel(name = "总包装费")
	@ApiModelProperty("总包装费")
	private BigDecimal totalPackingFee;

	/** 总里程费 */
	@Excel(name = "总里程费")
	@ApiModelProperty("总里程费")
	private BigDecimal totalMileageFee;

	/** 总运费 */
	@Excel(name = "总运费")
	@ApiModelProperty("总运费")
	private BigDecimal totalCarriageFee;

	/** 交易总价 */
	@ApiModelProperty("交易总价")
	private BigDecimal tradeTotalFee;

	/** 应付总价 */
	@ApiModelProperty("应付总价")
	private BigDecimal payableTotalFee;

	/** 备注 */
	@Excel(name = "备注")
	@ApiModelProperty("备注")
	private String remark;

	/** 添加时间 */
	@Excel(name = "添加时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("添加时间")
	private Date createTime;

	/** 创建者 */
	@Excel(name = "创建者")
	@ApiModelProperty("创建者")
	private String createBy;

	/** 更新时间 */
	@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("更新时间")
	private Date updateTime;

	/** 更新者 */
	@Excel(name = "更新者")
	@ApiModelProperty("更新者")
	private String updateBy;


}
